package study;

/**
 * 包装类
 * java定义了8个包装类，目的是为了解决基本类型不能直接而参与面向对象开发的问题，使基本类型可以通过包装类的形式存在
 *
 * Character、Byte、Integer、Short、Long、Float、Double、Boolean
 * Character、Boolean继承自Object，其余6个包装类继承自java.lang.Number类
 *
 * Byte、Short、Long、Float、Double包装类和Integer类操作类似
 *
 * */
public class PackagingClass {
    public static void main(String[] args) {
        PackagingClass pc = new PackagingClass();
        pc.testInteger();
    }

    public void testInteger() {
        Integer integer = new Integer(30);
        /**
         * 在jdk1.5推出了新特性，自动拆装箱
         * 当编译器编译时若发现是基本类型与包装类型之间相互赋值，则java会自动补全代码
         * Integer integer1 = 30;       会被编译为：  Integer integer1 = Integer.valueOf(30);
         * int a = integer1;            会被编译为：  int a = integer1.intValue();
         * */
        Integer integer1 = 30;      // 自动装箱
        int a = integer1;           // 自动拆箱

        System.out.println(integer);
        System.out.println(integer1);
        System.out.println(a);
        System.out.println(integer == integer1);        // 比较地址
        System.out.println(integer.equals(integer1));   // 比较值，Integer类重写了equals()方法

        Integer integer2 = Integer.valueOf(200);
        Integer integer3 = Integer.valueOf(200);
        System.out.println(integer2);
        System.out.println(integer2 == integer3);
        System.out.println(integer2.equals(integer3));

        Integer integer4 = Integer.valueOf(100);
        Integer integer5 = Integer.valueOf(100);
            /**
             * Integer.valueOf()会复用-128到127范围内的数据的地址，在进行“==”比较时两数相等时结果为true
             * */
        System.out.println(integer4);
        System.out.println(integer4 == integer5);
        System.out.println(integer4.equals(integer5));

        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        System.out.println("int型数据的最大值：" + max + "\t\t最小值：" + min);
        int b = Integer.parseInt("933");
        System.out.println(b);

    }
}
